<< Back to shouce.jb51.net


[上一页][索引页][首页][下一页]

7. 配置您的内核


04.08.01.14:57.Eric - 04.08.01.18:52.Eric (break = 29 min, delta time = 206 min)
EstimatedActual
Time (minutes)Units (words)TimeUnitsRates (min/word)
217217020621700.09

内容:

7.a. 时区

您首先需要选择您所在的时区以便系统知道它自己身在何处. 从 /usr/share/zoneinfo 中找到您的时区, 然后用 ln 作一个符号链接到 /etc/localtime:

代码清单 1: 设定时区信息
# ls /usr/share/zoneinfo
(假设您打算用 GMT 时间)
# ln -sf /usr/share/zoneinfo/GMT /etc/localtime

7.b. 安装源码

选择一个内核

所有发行版 (distributions) 的核心便是 Linux 内核. 它是处于用户程序和系统硬件直接的一层 (layer). Gentoo 提供了数个内核源码以供选择. 可用内核列表及其详细描述请参看 Gentoo 内核指引.

对于 x86 的系统, 我们有 vanilla-sources (linux 开发者们开发的默认内核源码), gentoo-sources (打过性能增强补丁包的内核源码), gentoo-dev-sources (打过性能增强补丁包的 2.6 内核), gs-sources (针对服务器应用打过补丁包的内核), development-sources (普通的 2.6 内核), ...

如果您进行的是无网络安装, 您的选择便局限于 CD 中所提供的内核. 2004.2 版本中提供了:

选择一个内核源码并用 emerge 安装它:

代码清单 2: 安装内核源码
# emerge gentoo-sources

这时看看 /usr/src 目录, 您应该能见到一个名为 linux 的符号链接指向您的内核源码:

代码清单 3: 查看内核源码的符号链接
# ls -l /usr/src/linux
lrwxrwxrwx    1 root     root           12 Oct 13 11:04 /usr/src/linux -> linux-2.4.26-gentoo-r6

如果不是这样 (换句话说, 该符号链接指向了另一个内核源码), 请先将其修正再继续后面的步骤:

代码清单 4: 修改内核源码的符号链接
# rm /usr/src/linux
# cd /usr/src
# ln -s linux-2.4.26-gentoo-r6 linux

下面开始编译您的内核源码. 您可以使用 genkernel 来自动帮您完成这一工作, 它会编译一个和 LiveCD 所用的一样的通用型 (generic) 内核. 不过我们首先要介绍 "手动" 配置的方法, 因为这是优化您系统环境的最佳路径.

您要乐意手动配置内核, 请阅读默认: 手动配置. 您要想用 genkernel, 则请看替代: 使用 genkennel.

7.c. 默认: 手动配置

简介

手动配置内核通常被视为每个 Linux 用户最难过的一关. 事实非也 (Nothing is less true) -- 在配置过几个内核之后, 您恐怕连它难在哪儿都忘了 ;)

不过呢, 有一件事确切的: 在您开始配置内核之前, 您必需清楚地了解自己的系统. 许多信息可以从 /proc/pci 中查看到 (如果有 lspci 的话, 也可以通过它来查看). 您还可以用 lsmod 来查看 LiveCD 都使用了那些模块 (这会是一个不错的提示以助您决定启用那些内核选项).

现在, 去到您的内核源码所在目录, 并运行 make menuconfig. 这将启动基于 ncurses (ncurses-based) 的配置界面:

代码清单 5: 调用 menuconfig
# cd /usr/src/linux
# make menuconfig

您将看到几部分配置内容. 我们会首先列出一些必需启用的选项 (不启用的话, Gentoo 可能无法工作或工作异常).

启用必要的选项 (Activating Required Options)

首先, 启用试验性的代码/驱动. 您需要这个, 否则一些很重要的代码/驱动都不会出现 (Cure: 即在后面的配置选项中找不到它们):

代码清单 6: 选上试验性 (experimental) 的代码/驱动
Code maturity level options --->
  [*] Prompt for development and/or incomplete code/drivers

确保您的内核是针对正确的处理器类型 (processor family) 进行编译的: (Cure: intel 的 cpu 可别编了个给 amd cpu 用的内核)

代码清单 7: 选上合适的处理器类型
Processor type and features --->
  (根据您的系统而定)
  (Athlon/Duron/K7) Processor family

下面到 File System (文件系统) 部分, 选择必要的文件系统支持. 请不要将它们编译成 模块形式, 否则您的 Gentoo 系统将无法挂载您的分区. 另外还要选上 Virtual Memory (虚拟内存), /proc file system (进程文件系统), /dev file system (设备文件系统) + Automatically mount at boot (启动时自动挂载文件系统):

代码清单 8: 选择必要的文件系统
(2.4.x 内核)
File systems --->
  [*] Virtual memory file system support (former shm fs)
  [*] /proc file system support
  [*] /dev file system support (EXPERIMENTAL)
  [*]   Automatically mount at boot
  [ ] /dev/pts file system for Unix98 PTYs

(2.6.x 内核)
File systems --->
  Pseudo Filesystems --->
    [*] /proc file system support
    [*] /dev file system support (OBSOLETE)
    [*]   Automatically mount at boot
    [*] Virtual memory file system support (former shm fs)

(按您系统所需选取下例选项)

  <*> Reiserfs support
  <*> Ext3 journalling file system support
  <*> JFS filesystem support
  <*> Second extended fs support
  <*> XFS filesystem support

如果您的 BIOS 无法处理大容量硬盘, and you jumpered the harddrive to report a limited size, 您需要启用下面这一选项以便您能够访问整个硬盘:

代码清单 9: 选上 autogeometry resizing 支持
(仅对 2.4.x 内核)
ATA/IDE/MFM/RLL support --->
  IDE, ATA and ATAPI Block devices --->
    <*>   Include IDE/ATA-2 DISK support
    [ ]     Use multi-mode by default
    [*]     Auto-Geometry Resizing support

如果您用 PPPoE 来连接因特网, 或是拨号上网, 则需要在内核中启用如下选项:

代码清单 10: 选上必要的 PPPoE 驱动
(对于 2.4.x 内核)
Network device support --->
  <*> PPP (point-to-point protocol) support
  <*>   PPP support for async serial ports
  <*>   PPP support for sync tty ports

(对于 2.6.x 内核)

Device Drivers --->
  Networking support --->
    <*> PPP (point-to-point protocol) support
    <*>   PPP support for async serial ports
    <*>   PPP support for sync tty ports

另外有俩压缩 (compression) 选项以及 PPP over Ethernet 选项选上无妨, 却也不是必需的. 它们仅在配置了内核 模式的 PPPoE (kernel mode PPPoE) 之后会被 rp-pppoe 用到.

如果您需要 PPPoE 支持, 请记得同时在内核中选上对您的网卡的支持.

如果您有一个支持超线程 (HyperThreading (tm)) 的 Intel 的 CPU, 或者您的机器上有多个 CPU, 则需要选上 "Symmetric multi-processing support":

代码清单 11: 启用 SMP 支持
Processor type and features  --->
  [*] Symmetric multi-processing support

内核配置完毕之后, 请继续编译安装.

编译安装

您的内核经已配置完毕, 下面我们要做的是编译和安装它. 退出配置界面并执行 make dep && make bzImage modules modules_install:

代码清单 12: 编译内核
(对于 2.4 内核)
# make dep && make bzImage modules modules_install

(对于 2.6 内核)
# make && make modules_install

编译完成之后, 将内核映象文件拷贝到 /boot 下. 从这里开始, 我们假设您装的是 2.4.26 版本的 gentoo-sources. 给您的内核映象文件起一个您觉得合适的名字并记住, 因为随后配置启动器 (bootloader) 时会用到它.

代码清单 13: 安装内核
# cp arch/i386/boot/bzImage /boot/kernel-2.4.26-gentoo-r6
# cp System.map /boot/System.map-2.4.26-gentoo-r6

一些情况下, 把内核配置拷到 /boot 下也是颇为明智的:) (Cure: 总之找个地方保存好当前的内核配置, 下次再编译或想调整内核配置, 你就可以以它为基础进行, 而不必一切从头开始)

代码清单 14: 备份您的内核配置
# cp .config /boot/config-2.4.26-gentoo-r6

下面继续安装各个 (separate) 内核模块.

7.d. 替代: 使用 genkennel

如果您正在阅读这一部分, 说明您决定选择我们提供的 genkernel 脚本来为您配置内核.

目前您的内核源码树已经安装完毕, 现在您可以用我们的 genkernel 来为您自动地编译内核. genkernel 会创建一个和 LiveCD 所用的配置几乎一样的 (nearly identically) 内核. 这意味着当您用 genkernel 来编译内核后, 您的系统在启动时会以我们的 LiveCD 那样的方式进行硬件检测和识别. 由于 genkernel 不需要您进行任何手动配置内核的动作, 所以这对于不乐意编译自己内核的用户来说是一个理想的方法.

下面我们看看怎样使用 genkernel, 首先 emerge 它:

代码清单 15: 安装 genkernel
# emerge genkernel

现在, 运行 genkernel all 以编译内核. 不过请留意一点, 由于 genkernel 会编译一个几乎支持所有硬件的内核, 所以这一过程会需要相当多的时间!

需要指出的是, 如果您的启动分区用的不是 ext2 或 ext3 文件系统, 那么您就需要用 genkernel --menuconfig all 来手动地在内核 (编译进内核而非编译成 模块) 加入对所用文件系统的选择.

代码清单 16: 运行 genkernel
# genkernel all
(break: 17:38 - 18:07 = 29 min)

genkernel 完毕后, 将创建一个内核, 一堆的模块, 以及一个 initial root disk (Cure: 从 Gentoo 论坛上看到的信息让我觉得这里似乎应该是 initial RAM disk, 要了解 initrd, 请看 "Initial RAM Disk HOWTO") (initrd). 我们随后文档中配置启动器时将用到内核与 initrd. 请记下内核与 initrd 的名字, 因为在您写启动器的配置文件时就得用到. initrd 会在系统启动后立即开始硬件检测工作 (正如 LiveCD 那样).

代码清单 17: 查看已创建的内核映象与 initrd
# ls /boot/kernel* /boot/initrd*

下面让我们再做一步以让系统和 LiveCD 更像 -- 安装 hotplug. initrd 是用来检测启动系统所必需的硬件的, 而 hotplug 则用以检测此外的一切. 我们输入下面的命令来 emerge 并启用 hotplug:

代码清单 18: emerge 并启用 hotplug
# emerge hotplug
# rc-update add hotplug default

7.e. 安装各个 (separate) 内核模块

安装额外的模块

一般情况下, 您需要为您系统中的其他硬件 emerge 相应的 ebuilds. 下面列出您可选用的一些内核相关 (kernel-related) 的 ebuild:

Ebuild用途 (Purpose)命令
nvidia-kernel为 xorg-x11 提供 NVIDIA 图形加速emerge nvidia-kernel
nforce-net针对 NVIDIA NForce(2) 主板上集成的网卡 (ethernet controller)emerge nforce-net
nforce-audio针对 NVIDIA NForce(2) 主板上集成的声卡emerge nforce-audio
e100针对 Intel 的 e100 高速网卡 (Ethernet Adapters)emerge e100
e1000针对 Intel 的 e1000 千兆级网卡 (Gigabit Ethernet Adapters)emerge e1000
emu10k1Creative Sound Blaster Live!/Audigy 支持emerge emu10k1
ati-drivers为 xorg-x11 提供 ATI Radeon 8500+/FireGL 图形加速emerge ati-drivers
ati-drivers-extraATI 的一些带图形界面的工具emerge ati-drivers-extra

请留意, 其中有些 ebuild 涉及数量庞大的依赖关系. 您可以使用 emerge --pretend 来查看一个 ebuild 被 emerge 时都有哪些其他的软件包会被作为依赖包安装进来. 我们以 emu10k1 为例:

代码清单 19: 查看会被安装的软件包列表
# emerge --pretend emu10k1

如果您见到不乐意安装的软件包, 您可以用 emerge --pretend --verbose 来查看在计算依赖关系时都用了哪些 USE 参数:

代码清单 20: 查看 USE 参数的使用情况
# emerge --pretend --verbose emu10k1
...
[ebuild  N    ] media-sound/aumix-2.8  +gpm +nls +gtk +gnome +alsa -gtk2

上述例子中, 您会发现 emu10k1 的依赖包之一 (aumix) 用了 gtk 和 gnome 俩 USE 参数, 这会让 gtk 也一同编译进来 (而 gtk 本身依赖于另一庞然大物 xorg-x11). (Cure: 也就是说, 装这么一个 emu10k1 的话, 以这种 USE-flags 设置, 你就需要同时装上 xorg-x11, gtk... 足以折腾你不少的时间!)

如果您不想这些东西都编译的话, 取消所有的 USE 参数, 如:

代码清单 21: 取消 (diselected) 所有的 USE 参数来 emerge emu10k1
# USE="-gpm -nls -gtk -gnome -alsa" emerge --pretend emu10k1

如果结果让您满意, 把 --pretend 去掉以便真正地开始安装 emu10k1.

配置模块

要想能自动加载一些 模块, 您得把它们列在 /etc/modules.autoload.d/kernel-2.4 (或 kernel-2.6) 文件中. 您需要的话, 还可以给 模块添加额外的参数 (add extra options to the modules).

运行下述的 find 命令以列出所有的模块. 请记得把 "<内核版本>" 替换成您刚编译的内核版本:

代码清单 22: 查看现有模块列表
# find /lib/modules/<内核版本>/ -type f -iname '*.o' -or -iname '*.ko'

例如, 要自动加载 3c59x.o 模块, 编辑 kernel-2.4 或 kernel-2.6 把这一模块名字添上:

代码清单 23: 编辑 /etc/modules.autoload.d/kernel-2.4
(以 2.4 内核为例)
# nano -w /etc/modules.autoload.d/kernel-2.4

代码清单 24: /etc/modules.autoload.d/kernel-2.4 或 kernel-2.6
3c59x

现在运行 modules-update 以确认 (commit) 您对 /etc/modules.conf 文件的修改:

代码清单 25: 运行 modules-update
# modules-update

请继续下一章配置您的系统.


[上一页][索引页][首页][下一页]

Valid HTML 4.01!